#include <iostream>
#include <vector>

using namespace std;

//        //方法：动态规划
//        //时间复杂度O(N)，空间复杂度O(N)//
//int fib(int N)
//{
//    if (N <= 1) return N;
//    vector<int> dp(N + 1);
//    dp[0] = 0;
//    dp[1] = 1;
//    for (int i = 2; i <= N; i++)
//    {
//        dp[i] = dp[i - 1] + dp[i - 2];
//    }
//    return dp[N];
//}


//      //优化  只需要维护两个数值就可以了，不需要记录整个序列 
//      //时间复杂度O(N)，空间复杂度O(1)
//int fib(int N) 
//{
//    if (N <= 1) return N;
//    int dp[2];
//    dp[0] = 0;
//    dp[1] = 1;
//    for (int i = 2; i <= N; i++) {
//        int sum = dp[0] + dp[1];
//        dp[0] = dp[1];
//        dp[1] = sum;
//
//    }
//    return dp[1];
//}

        //方法：递归
int fib(int N)
{
    if (N < 2) return N;
    return fib(N - 1) + fib(N - 2);
}

int main()
{
    int n;
    while(1)
    {
        cin >> n;
        int ret = fib(n);
        cout << ret << endl;
    }
    return 0;
}
